home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: rec.games.programmer,comp.lang.c,alt.lang.asm,comp.lang.asm.x86
- Path: news2.new-york.net!not-for-mail
- From: Emre Yucel <amoeba@buttercup.cybernex.net>
- Subject: Re: Int 10h
- Content-Type: text/plain; charset=us-ascii
- X-Nntp-Posting-User: (Unauthenticated)
- Content-Transfer-Encoding: 7bit
- Message-ID: <DMBw88.G5G@news2.new-york.net>
- References: <4f2v3d$qs9@wolfe.wimsey.com> <4f52od$bni@hacgate2.hac.com>
- X-Mailer: Mozilla 1.22 (Windows; I; 16bit)
- Mime-Version: 1.0
- X-Trace: 823566814/17844
- X-Nntp-Posting-Host: cnj121.cybernex.net
- Date: Tue, 6 Feb 1996 00:33:43 GMT
-
- Justin Liew (jliew@wimsey.com) wrote:
- : I'm writing a game in mode 13h in Turbo C, and the fonts in mode 13h
- look
- : really crappy. I perused Ralf brown's interrupt page for ways to get
- : better fonts, and I came up with int10h. How would I go about
- : implementing this interrupt to bring in better fonts. Where could I
- : download fonts, what form are they in, and how do I use them with the
- : interrupt to allow me to use them? If you know, could you please help
- me?
- : Thanx
- : JUSTIN
-
- You're asking the wrong people here. Ask this over in
- comp.msdos.programmer,
- or one of the graphics groups.
-
- BTW, mode 13h is 320x200 pixels; I don't think *any* font is going to look
- very good at that low resolution.
-
- Please! Many fonts look nice in 320x200. How do you think all the games
- out there have such nice fonts. Ok, ok, 1024x768 is better but we are not
- using DX2 septiums here! Interrupt 10h is just a general interrupt that
- relates to VGA BIOS. All graphic realted things are done through int 10h.
- You can also change video fonts. I have seen this happen many times
- in text mode but never in graphics mode. But you may try. Got nothing to
- lose. Here is a list of all uses of interrupt 10h....
-
- --VGABIOS.TXT
-
- ----------1000-------------------------------
- INT 10 - VIDEO - SET VIDEO MODE
- AH = 00h
- AL = mode (see below)
- Return: AL = video mode flag (Phoenix BIOS)
- 20h mode > 7
- 30h modes <= 7 except mode 6
- 3Fh mode 6
- AL = CRT controller mode byte (Phoenix 386 BIOS v1.10)
- Notes: IBM standard modes do not clear the screen if the high bit of
- AL is set
- (EGA or higher only)
- SeeAlso: AX=0070h,AX=007Eh,AX=10F0h,AX=6F05h,AH=FFh"GO32",INT 5F/AH=00h
-
- Values for video mode:
- text/ text pixel pixel colors display scrn system
- grph resol box resoltn pages addr
- 00h = T 40x25 8x14 16gray 8 B800 EGA
- = T 40x25 8x16 16 8 B800 MCGA
- = T 40x25 9x16 16 8 B800 VGA
- 01h = T 40x25 8x14 16 8 B800 EGA
- = T 40x25 8x16 16 8 B800 MCGA
- = T 40x25 9x16 16 8 B800 VGA
- 02h = T 80x25 8x14 16gray 4 B800 EGA
- = T 80x25 8x16 16 4 B800 MCGA
- = T 80x25 9x16 16 4 B800 VGA
- 03h = T 80x25 8x14 16 4 B800 EGA
- = T 80x25 8x16 16 4 B800 MCGA
- = T 80x25 9x16 16 4 B800 VGA
- 04h = G 40x25 8x8 320x200 4 B800
- CGA,PCjr,EGA,MCGA,VGA
- 05h = G 40x25 8x8 320x200 4gray B800 CGA,PCjr,EGA
- = G 40x25 8x8 320x200 4 B800 MCGA,VGA
- 06h = G 80x25 8x8 640x200 2 B800
- CGA,PCjr,EGA,MCGA,VGA
- 07h = T 80x25 9x14 mono var B000 MDA,Hercules,EGA
- = T 80x25 9x16 mono B000 VGA
- 0Bh = reserved (used internally by EGA BIOS)
- 0Ch = reserved (used internally by EGA BIOS)
- 0Dh = G 40x25 8x8 320x200 16 8 A000 EGA,VGA
- 0Eh = G 80x25 8x8 640x200 16 4 A000 EGA,VGA
- 0Fh = G 80x25 8x14 640x350 mono 2 A000 EGA,VGA
- 10h = G 80x25 8x14 640x350 4 2 A000 64k EGA
- = G 640x350 16 A000 256k EGA,VGA
- 11h = G 80x30 8x16 640x480 mono A000 VGA,MCGA,ATI EGA,ATI
- VIP
- 12h = G 80x30 8x16 640x480 16/256k A000 VGA,ATI VIP
- = G 80x30 8x16 640x480 16/64 A000 ATI EGA Wonder
- 13h = G 40x25 8x8 320x200 256/256k A000 VGA,MCGA,ATI VIP
- ----------1001-------------------------------
- INT 10 - VIDEO - SET TEXT-MODE CURSOR SHAPE
- AH = 01h
- CH = bit 7 should be zero
- bits 6,5 cursor blink
- (00=normal, 01=invisible, 10=erratic, 11=slow)
- (00=normal, other=invisible on EGA/VGA)
- bits 4-0 top scan line containing cursor
- CL = bottom scan line containing cursor (bits 0-4)
- Notes: buggy on EGA systems--BIOS remaps cursor shape in 43 line modes,
- but
- returns unmapped cursor shape
- applications which wish to change the cursor by programming the
- hardware directly on EGA or above should call INT 10/AX=1130h or
- read 0040h:0085h first to determine the current font height
- BUG: AMI 386 BIOS and AST Premier 386 BIOS will lock up the system if AL
- is not equal to the current video mode
- SeeAlso: AH=03h,AX=CD05h
- ----------1002-------------------------------
- INT 10 - VIDEO - SET CURSOR POSITION
- AH = 02h
- BH = page number
- 0-3 in modes 2&3
- 0-7 in modes 0&1
- 0 in graphics modes
- DH = row (00h is top)
- DL = column (00h is left)
- SeeAlso: AH=03h,AH=05h
- ----------1003-------------------------------
- INT 10 - VIDEO - GET CURSOR POSITION AND SIZE
- AH = 03h
- BH = page number
- 0-3 in modes 2&3
- 0-7 in modes 0&1
- 0 in graphics modes
- Return: AX = 0000h (Phoenix BIOS)
- CH = start scan line
- CL = end scan line
- DH = row (00h is top)
- DL = column (00h is left)
- Notes: a separate cursor is maintained for each of up to 8 display pages
- many ROM BIOSes incorrectly return the default size for a color
- display
- (start 06h, end 07h) when a monochrome display is attached
- SeeAlso: AH=01h,AH=02h
- ----------1004-------------------------------
- INT 10 - VIDEO - READ LIGHT PEN POSITION (EGA Only)
- AH = 04h
- Return: AH = light pen trigger flag
- 00h not down/triggered
- 01h down/triggered
- DH,DL = row,column of character light pen is on
- CH = pixel row (graphics modes 04h-06h)
- CX = pixel row (graphics modes with >200 rows)
- BX = pixel column
- Notes: on a CGA, returned column numbers are always multiples of 2 (320-
- column modes) or 4 (640-column modes)
- returned row numbers are only accurate to two lines
- ----------1005-------------------------------
- INT 10 - VIDEO - SELECT ACTIVE DISPLAY PAGE
- AH = 05h
- AL = new page number (00h to number of pages - 1) (see AH=00h)
- SeeAlso: AH=0Fh
- ----------1006-------------------------------
- INT 10 - VIDEO - SCROLL UP WINDOW
- AH = 06h
- AL = number of lines by which to scroll up (00h = clear entire
- window)
- BH = attribute used to write blank lines at bottom of window
- CH,CL = row,column of window's upper left corner
- DH,DL = row,column of window's lower right corner
- Note: affects only the currently active page (see AH=05h)
- Warning: some implementations have a bug which destroys BP
- SeeAlso: AH=07h,AH=72h,AH=73h
- ----------1007-------------------------------
- INT 10 - VIDEO - SCROLL DOWN WINDOW
- AH = 07h
- AL = number of lines by which to scroll down (00h=clear entire
- window)
- BH = attribute used to write blank lines at top of window
- CH,CL = row,column of window's upper left corner
- DH,DL = row,column of window's lower right corner
- Note: affects only the currently active page (see AH=05h)
- Warning: some implementations have a bug which destroys BP
- SeeAlso: AH=06h,AH=72h,AH=73h
- ----------1008-------------------------------
- INT 10 - VIDEO - READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION
- AH = 08h
- BH = page number (00h to number of pages - 1) (see AH=00h)
- Return: AH = attribute
- bit 7: blink
- bits 6-4: background color
- 000 black
- 001 blue
- 010 green
- 011 cyan
- 100 red
- 101 magenta
- 110 brown
- 111 white
- bits 3-0: foreground color
- 0000 black 1000 dark gray
- 0001 blue 1001 light blue
- 0010 green 1010 light green
- 0011 cyan 1011 light cyan
- 0100 red 1100 light red
- 0101 magenta 1101 light magenta
- 0110 brown 1110 yellow
- 0111 light gray 1111 white
- AL = character
- Notes: for monochrome displays, a foreground of 1 with background 0 is
- underlined
- the blink bit may be reprogrammed to enable intense background
- colors
- using AX=1003h or by programming the CRT controller
- SeeAlso: AH=09h,AX=1003h
- ----------1009-------------------------------
- INT 10 - VIDEO - WRITE CHARACTER AND ATTRIBUTE AT CURSOR POSITION
- AH = 09h
- AL = character to display
- BH = page number (00h to number of pages - 1) (see AH=00h)
- BL = attribute (text mode) or color (graphics mode)
- if bit 7 set in graphics mode, character is xor'ed onto
- screen
- CX = number of times to write character
- Notes: all characters are displayed, including CR, LF, and BS
- replication count in CX may produce an unpredictable result in
- graphics
- modes if it is greater than the number of positions remaining in
- the
- current row
- SeeAlso: AH=08h,AH=0Ah,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44
- ----------100A-------------------------------
- INT 10 - VIDEO - WRITE CHARACTER ONLY AT CURSOR POSITION
- AH = 0Ah
- AL = character to display
- BH = page number (00h to number of pages - 1) (see AH=00h)
- BL = attribute (PCjr only) or color (graphics mode)
- if bit 7 set in graphics mode, character is xor'ed onto
- screen
- CX = number of times to write character
- Notes: all characters are displayed, including CR, LF, and BS
- replication count in CX may produce an unpredictable result in
- graphics
- modes if it is greater than the number of positions remaining in
- the
- current row
- SeeAlso: AH=08h,AH=09h,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44
- ----------100B--BH00-------------------------
- INT 10 - VIDEO - SET BACKGROUND/BORDER COLOR
- AH = 0Bh
- BH = 00h
- BL = background/border color (border only in text modes)
- SeeAlso: AH=0Bh/BH=01h
- ----------100B--BH01-------------------------
- INT 10 - VIDEO - SET PALETTE
- AH = 0BH
- BH = 01h
- BL = palette ID
- 00h background, green, red, and brown/yellow
- 01h background, cyan, magenta, and white
- SeeAlso: AH=0Bh/BH=00h
- ----------100C-------------------------------
- INT 10 - VIDEO - WRITE GRAPHICS PIXEL
- AH = 0Ch
- BH = page number
- AL = pixel color (if bit 7 set, value is xor'ed onto screen)
- CX = column
- DX = row
- Notes: valid only in graphics modes
- BH is ignored if the current video mode supports only one page
- SeeAlso: AH=0Dh,AH=46h
- ----------100D-------------------------------
- INT 10 - VIDEO - READ GRAPHICS PIXEL
- AH = 0Dh
- BH = page number
- CX = column
- DX = row
- Return: AL = pixel color
- Notes: valid only in graphics modes
- BH is ignored if the current video mode supports only one page
- SeeAlso: AH=0Ch,AH=47h
- ----------100E-------------------------------
- INT 10 - VIDEO - TELETYPE OUTPUT
- AH = 0Eh
- AL = character to write
- BH = page number
- BL = foreground color (graphics modes only)
- Notes: characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are
- interpreted
- and do the expected things
- IBM PC ROMs dated 4/24/81 and 10/19/81 require that BH be the same
- as
- the current active page
- SeeAlso: AH=02h,AH=0Ah
- ----------100F-------------------------------
- INT 10 - VIDEO - GET CURRENT VIDEO MODE
- AH = 0Fh
- Return: AH = number of character columns
- AL = display mode (see AH=00h)
- BH = active page (see AH=05h)
- Notes: if mode was set with bit 7 set ("no blanking"), the returned mode
- will
- also have bit 7 set
- EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
- (monochrome) in all extended-row text modes
- SeeAlso: AH=00h,AH=05h,AX=1130h,AX=CD04h
- ----------101000----------------------------
- INT 10 - VIDEO - SET SINGLE PALETTE REGISTER (PCjr,EGA,MCGA,VGA)
- AX = 1000h
- BL = palette register number (00h-0Fh)
- = attribute register number (undocumented)
- 10h attribute mode control register (should let BIOS control
- this)
- 11h overscan color register (see also AX=1001h)
- 12h color plane enable register (bits 3-0 enable
- corresponding
- text attribute bit)
- 13h horizontal PEL panning register
- 14h color select register
- BH = color or attribute register value
- Notes: on MCGA, only BX = 0712h is supported
- under UltraVision, the palette locking status (see AX=CD01h)
- determines the outcome
- SeeAlso: AX=1002h,AX=1007h,AX=CD01h
- ----------101001-----------------------------
- INT 10 - VIDEO - SET BORDER (OVERSCAN) COLOR (PCjr,EGA,VGA)
- AX = 1001h
- BH = border color (00h-3Fh)
- BUG: the original IBM VGA BIOS incorrectly updates the parameter save area
- and places the border color at offset 11h of the palette table
- rather than offset 10h
- Note: under UltraVision, the palette locking status (see AX=CD01h)
- determines the outcome
- SeeAlso: AX=1002h,AX=1008h,AX=CD01h
- ----------101002-----------------------------
- INT 10 - VIDEO - SET ALL PALETTE REGISTERS (PCjr,EGA,VGA)
- AX = 1002h
- ES:DX -> palette register list
- Note: under UltraVision, the palette locking status (see AX=CD01h)
- determines the outcome
- SeeAlso: AX=1000h,AX=1001h,AX=1009h,AX=CD01h
-
- Format of palette register list:
- Offset Size Description
- 00h 16 BYTEs colors for palette registers 00h through 0Fh
- 10h BYTE border color
- ----------101003-----------------------------
- INT 10 - VIDEO - TOGGLE INTENSITY/BLINKING BIT (Jr, PS, TANDY 1000, EGA,
- VGA)
- AX = 1003h
- BL = new state
- 00h background intensity enabled
- 01h blink enabled
- Note: although there is no function to get the current status, bit 5 of
- 0040h:0065h indicates the state
- SeeAlso: AH=08h
- ----------101007-----------------------------
- INT 10 - VIDEO - GET INDIVIDUAL PALETTE REGISTER (VGA,UltraVision v2+)
- AX = 1007h
- BL = palette or attribute (undoc) register number (see AX=1000h)
- Return: BH = palette or attribute register value
- Notes: UltraVision v2+ supports this function even on color EGA systems in
- video modes 00h-03h, 10h, and 12h; direct programming of the
- palette
- registers will cause incorrect results because the EGA registers
- are
- write-only. To guard against older versions or unsupported video
- modes, programs which expect to use this function on EGA systems
- should set BH to FFh on entry.
- SeeAlso: AX=1000h,AX=1009h
- ----------101008-----------------------------
- INT 10 - VIDEO - READ OVERSCAN (BORDER COLOR) REGISTER (VGA,UltraVision
- v2+)
- AX = 1008h
- Return: BH = border color (00h-3Fh)
- Notes: UltraVision v2+ supports this function even on color EGA systems in
- video modes 00h-03h, 10h, and 12h; direct programming of the
- palette
- registers will cause incorrect results because the EGA registers
- are
- write-only. To guard against older versions or unsupported video
- modes, programs which expect to use this function on EGA systems
- should set BH to FFh on entry.
- SeeAlso: AX=1001h
- ----------101009-----------------------------
- INT 10 - VIDEO - READ ALL PALETTE REGISTERS AND OVERSCAN REGISTER (VGA)
- AX = 1009h
- ES:DX -> 17-byte buffer (see AX=1002h)
- Notes: UltraVision v2+ supports this function even on color EGA systems in
- video modes 00h-03h, 10h, and 12h; direct programming of the
- palette
- registers will cause incorrect results because the EGA registers
- are
- write-only. To guard against older versions or unsupported video
- modes, programs which expect to use this function on EGA systems
- should set the ES:DX buffer to FFh before calling.
- SeeAlso: AX=1002h,AX=1007h,AX=CD02h
- ----------101010-----------------------------
- INT 10 - VIDEO - SET INDIVIDUAL DAC REGISTER (VGA/MCGA)
- AX = 1010h
- BX = register number
- CH = new value for green (0-63)
- CL = new value for blue (0-63)
- DH = new value for red (0-63)
- SeeAlso: AX=1012h,AX=1015h
- ----------101012-----------------------------
- INT 10 - VIDEO - SET BLOCK OF DAC REGISTERS (VGA/MCGA)
- AX = 1012h
- BX = starting color register
- CX = number of registers to set
- ES:DX -> table of 3*CX bytes where each 3 byte group represents
- one
- byte each of red, green and blue (0-63)
- SeeAlso: AX=1010h,AX=1017h
- ----------101013-----------------------------
- INT 10 - VIDEO - SELECT VIDEO DAC COLOR PAGE (VGA)
- AX = 1013h
- BL = subfunction
- 00h select paging mode
- BH = 00h select 4 blocks of 64
- BH = 01h select 16 blocks of 16
- 01h select page
- BH = page number (00h to 03h) or (00h to 0Fh)
- Note: not valid in mode 13h
- SeeAlso: AX=101Ah
- ----------101015-----------------------------
- INT 10 - VIDEO - READ INDIVIDUAL DAC REGISTER (VGA/MCGA)
- AX = 1015h
- BL = palette register number
- Return: DH = red value
- CH = green value
- CL = blue value
- SeeAlso: AX=1010h,AX=1017h
- ----------101017-----------------------------
- INT 10 - VIDEO - READ BLOCK OF DAC REGISTERS (VGA/MCGA)
- AX = 1017h
- BX = starting palette register
- CX = number of palette registers to read
- ES:DX -> buffer (3 * CX bytes in size) (see also AX=1012h)
- Return: buffer filled with CX red, green and blue triples
- SeeAlso: AX=1012h,AX=1015h
- ----------101018-----------------------------
- INT 10 - VIDEO - undocumented - SET PEL MASK (VGA/MCGA)
- AX = 1018h
- BL = new PEL value
- SeeAlso: AX=1019h
- ----------101019-----------------------------
- INT 10 - VIDEO - undocumented - READ PEL MASK (VGA/MCGA)
- AX = 1019h
- Return: BL = value read
- SeeAlso: AX=1018h
- ----------10101A-----------------------------
- INT 10 - VIDEO - GET VIDEO DAC COLOR-PAGE STATE (VGA)
- AX = 101Ah
- Return: BL = paging mode
- 00h four pages of 64
- 01h sixteen pages of 16
- BH = current page
- SeeAlso: AX=1013h
- ----------10101B-----------------------------
- INT 10 - VIDEO - PERFORM GRAY-SCALE SUMMING (VGA/MCGA)
- AX = 101Bh
- BX = starting palette register
- CX = number of registers to convert
- SeeAlso: AH=12h/BL=33h
- ----------1011-------------------------------
- INT 10 - VIDEO - TEXT-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
- AH = 11h
- The following functions will cause a mode set, completely resetting
- the video environment, but without clearing the video buffer
- AL = 00h, 10h: load user-specified patterns
- ES:BP -> user table
- CX = count of patterns to store
- DX = character offset into map 2 block
- BL = block to load in map 2
- BH = number of bytes per character pattern
- AL = 01h, 11h: load ROM monochrome patterns (8 by 14)
- BL = block to load
- AL = 02h, 12h: load ROM 8 by 8 double-dot patterns
- BL = block to load
- AL = 03h: set block specifier
- BL = block specifier
- (EGA/MCGA) bits 0,1 = block selected by chars with
- attribute bit 3=0
- bits 2,3 = block selected by chars with
- attribute bit 3=1
- (VGA) bits 0,1,4 = block selected by attribute bit 3 =
- 0
- bits 2,3,5 = block selected by attribute bit 3 =
- 1
- AL = 04h, 14h: load ROM 8x16 character set (VGA)
- BL = block to load
- The routines called with AL=1xh are designed to be called only
- immediately after a mode set and are similar to the routines called
- with AL=0xh, except that:
- Page 0 must be active.
- Bytes/character is recalculated.
- Max character rows is recalculated.
- CRT buffer length is recalculated.
- CRTC registers are reprogrammed as follows:
- R09 = bytes/char-1 ; max scan line (mode 7 only)
- R0A = bytes/char-2 ; cursor start
- R0B = 0 ; cursor end
- R12 = ((rows+1)*(bytes/char))-1 ; vertical display end
- R14 = bytes/char ; underline loc
- (*** BUG: should be 1 less ***)
- SeeAlso: AX=CD10h
- ----------1011-------------------------------
- INT 10 - VIDEO - GRAPHICS-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA,
- VGA)
- AH = 11h
- AL = 20h: set user 8 by 8 graphics characters (INT 1F)
- ES:BP -> user table
- AL = 21h: set user graphics characters
- ES:BP -> user table
- CX = bytes per character
- BL = row specifier
- 00h user set
- DL = number of rows
- 01h 14 rows
- 02h 25 rows
- 03h 43 rows
- AL = 22h: ROM 8 by 14 set
- BL = row specifier (see above)
- AL = 23h: ROM 8 by 8 double dot
- BL = row specifier (see above)
- AL = 24h: load 8x16 graphics characters (VGA/MCGA)
- BL = row specifier (see above)
- AL = 29h: load 8x16 graphics characters (Compaq Systempro)
- BL = row specifier (see above)
- Notes: these functions are meant to be called only after a mode set
- UltraVision v2+ sets INT 43 to the appropriate font for
- AL=22h,23h,24h,
- and 29h
- SeeAlso: INT 1F, INT 43
- ----------101130-----------------------------
- INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA)
- AX = 1130h
- BH = pointer specifier
- 00h INT 1Fh pointer
- 01h INT 43h pointer
- 02h ROM 8x14 character font pointer
- 03h ROM 8x8 double dot font pointer
- 04h ROM 8x8 double dot font (high 128 characters)
- 05h ROM alpha alternate (9 by 14) pointer (EGA,VGA)
- 06h ROM 8x16 font (MCGA, VGA)
- 07h ROM alternate 9x16 font (VGA only)
- 11h (UltraVision v2+) 8x20 font (VGA) or 8x19 font (autosync
- EGA)
- 12h (UltraVision v2+) 8x10 font (VGA) or 8x11 font (autosync
- EGA)
- Return: ES:BP = specified pointer
- CX = bytes/character
- DL = character rows on screen - 1
- Note: for UltraVision v2+, the 9xN alternate fonts follow the
- corresponding
- 8xN font at ES:BP+256N
- SeeAlso: AX=1100h,AX=1120h,INT 1F,INT 43
- ----------1012--BL10-------------------------
- INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, EGA, VGA, MCGA) - GET EGA
- INFO
- AH = 12h
- BL = 10h
- Return: BH = 00h color mode in effect (I/O port 3Dxh)
- 01h mono mode in effect (I/O port 3Bxh)
- BL = 00h 64k bytes memory installed
- 01h 128k bytes memory installed
- 02h 192k bytes memory installed
- 03h 256k bytes memory installed
- CH = feature bits
- CL = switch settings
- ----------1012--BL20-------------------------
- INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS,EGA,VGA,MCGA) - ALTERNATE
- PRTSC
- AH = 12h
- BL = 20h select alternate print screen routine
- Notes: installs a PrtSc routine from the video card's BIOS to replace the
- default PrtSc handler from the ROM BIOS, which usually does not
- understand screen heights other than 25 lines
- some adapters disable print-screen instead of enhancing it
- SeeAlso: INT 05
- ----------1012--BL30-------------------------
- INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - SELECT VERTICAL
- RESOLUTION
- AH = 12h
- BL = 30h
- AL = vertical resolution
- 00h 200 scan lines
- 01h 350 scan lines
- 02h 400 scan lines
- Return: AL = 12h if function supported
- ----------1012--BL31-------------------------
- INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - PALETTE LOADING
- AH = 12h
- BL = 31h
- AL = 00h enable default palette loading
- 01h disable default palette loading
- Return: AL = 12h if function supported
- ----------1012--BL32-------------------------
- INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - VIDEO ADDRESSING
- AH = 12h
- BL = 32h
- AL = 00h enable video addressing
- 01h disable video addressing
- Return: AL = 12h if function supported
- ----------1012--BL33-------------------------
- INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - GRAY-SCALE
- SUMMING
- AH = 12h
- BL = 33h
- AL = 00h enable gray scale summing
- 01h disable gray scale summing
- Return: AL = 12h if function supported
- SeeAlso: AX=101Bh,AX=BF06h
- ----------1012--BL34-------------------------
- INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - CURSOR EMULATION
- AH = 12h
- BL = 34h
- AL = 00h enable alphanumeric cursor emulation
- 01h disable alphanumeric cursor emulation
- Return: AL = 12h if function supported
- ----------1012--BL35-------------------------
- INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS) - DISPLAY-SWITCH INTERFACE
- AH = 12h
- BL = 35h
- AL = 00h initial adapter video off
- 01h initial planar video on
- 02h switch active video off
- 03h switch inactive video on
- 80h *UNDOCUMENTED* set system board video active flag
- ES:DX -> buffer (128 byte save area if AL = 0, 2 or 3)
- Return: AL = 12h if function supported
- ----------1012--BL36-------------------------
- INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, VGA) - VIDEO REFRESH
- CONTROL
- AH = 12h
- BL = 36h
- AL = 00h enable refresh
- 01h disable refresh
- Return: AL = 12h if function supported
- ----------1013-------------------------------
- INT 10 - VIDEO - WRITE STRING (AT and later,EGA)
- AH = 13h
- AL = write mode
- bit 0: update cursor after writing
- 1: string contains alternating characters and attributes
- BH = page number
- BL = attribute if string contains only characters
- CX = number of characters in string
- DH,DL = row,column at which to start writing
- ES:BP -> string to write
- Notes: recognizes CR, LF, BS, and bell
- also available PC or XT with EGA or higher
- HP 95LX only supports write mode 00h
- BUG: on the IBM VGA Adapter, any scrolling which may occur is performed on
- the active page rather than the requested page
- SeeAlso: AH=09h,AH=0Ah
- ----------101A-------------------------------
- INT 10 - VIDEO - DISPLAY COMBINATION (PS,VGA/MCGA)
- AH = 1Ah
- AL = 00h read display combination code
- Return: BL = active display code (see below)
- BH = alternate display code
- 01h set display combination code
- BL = active display code (see below)
- BH = alternate display code
- Return: AL = 1Ah if function was supported
-
- Values for display combination code:
- 00h no display
- 01h monochrome adapter w/ monochrome display
- 02h CGA w/ color display
- 03h reserved
- 04h EGA w/ color display
- 05h EGA w/ monochrome display
- 06h PGA w/ color display
- 07h VGA w/ monochrome analog display
- 08h VGA w/ color analog display
- 09h reserved
- 0Ah MCGA w/ digital color display
- 0Bh MCGA w/ monochrome analog display
- 0Ch MCGA w/ color analog display
- FFh unknown display type
- ----------101B-------------------------------
- INT 10 - VIDEO - FUNCTIONALITY/STATE INFORMATION (PS,VGA/MCGA)
- AH = 1Bh
- BX = implementation type
- 0000h return functionality/state information
- ES:DI -> 64 byte buffer for state information (see below)
- Return: AL = 1Bh if function supported
- ES:DI buffer filled with state information
- SeeAlso: AH=15h
-
- Format of state information:
- Offset Size Description
- 00h DWORD address of static functionality table (see below)
- 04h BYTE video mode in effect
- 05h WORD number of columns
- 07h WORD length of regen buffer in bytes
- 09h WORD starting address of regen buffer
- 0Bh WORD cursor position for page 0
-
-
- The limitations of this program is stopping me from including the rest of
- this information. 2 more pages left. But the part about the fonts are up
- there.
- Have fun.
-
-